package dao

import (
	"gitee.com/mangenotwork/game-douniu/api/common"
	"gitee.com/mangenotwork/game-douniu/api/entity"
	"github.com/mangenotwork/common/utils"
	"time"
)

type IosUUIDDao struct {
}

func (dao *IosUUIDDao) Add(uuid, visitor string) (*entity.IosUUID, error) {
	db := common.GetGorm("test")
	data := &entity.IosUUID{
		UUID:      uuid,
		Agree:     0,
		Visitor:   visitor,
		CreatedAt: utils.Timestamp2Date(time.Now().Unix()),
	}
	err := db.Model(&entity.IosUUID{}).Create(data).Error
	return data, err
}

func (dao *IosUUIDDao) List(page, limit int64) (int64, []*entity.IosUUID, error) {
	db := common.GetGorm("test")

	result := make([]*entity.IosUUID, 0)
	db = db.Model(&entity.IosUUID{})

	var count int64 = 0
	err := db.Count(&count).Error
	if err != nil {
		return count, result, err
	}

	err = db.Order("id desc").Scopes(Pagination(int(page), int(limit))).Find(&result).Error
	return count, result, err
}

func (dao *IosUUIDDao) Agree(uuid string, agree int64) error {
	db := common.GetGorm("test")
	ex := map[string]any{"agree": agree}
	return db.Model(&entity.IosUUID{}).Where("uuid=?", uuid).Updates(ex).Error
}

func (dao *IosUUIDDao) GetByVisitor(visitor string) (*entity.IosUUID, error) {
	db := common.GetGorm("test")
	result := &entity.IosUUID{}
	err := db.Model(&entity.IosUUID{}).Where("visitor=?", visitor).First(&result).Error
	return result, err
}

func (dao *IosUUIDDao) GetByUuid(uuid string) (*entity.IosUUID, error) {
	db := common.GetGorm("test")
	result := &entity.IosUUID{}
	err := db.Model(&entity.IosUUID{}).Where("uuid=?", uuid).First(&result).Error
	return result, err
}
